package br.trainee.web.converters;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.faces.convert.FacesConverter;
import javax.inject.Inject;

import br.trainee.web.controller.LinguagemBean;
import br.trainee.web.util.UtilFuncoes;

@FacesConverter(value="doubleConverter")
public class DoubleConverter implements Converter{
	
	@Inject
	private LinguagemBean linguagem;

	/**
	 * Essa fase sai do client-side (lado do cliente) e manda uma string como parâmetro para o servidor
	 */
	@Override
	public Object getAsObject(FacesContext context, UIComponent componente, String valor) {
		
		//HttpSession sessao = ((HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest()).getSession();
		//LinguagemBean linguagem2 = (LinguagemBean) sessao.getAttribute("linguagem");
		if(!UtilFuncoes.isCampoVazio(valor)){
			Double campoConvertido = null;
			
			try{
				
				campoConvertido = Double.valueOf(valor);
				
				return campoConvertido;
				
			}catch(NumberFormatException a){
				
				throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, linguagem.getString("msg_converter_campo_invalido"), linguagem.getString("msg_converter_campo_decimal")));
				
			}
			
			
		}
		
		return null;
	}
	
	/**
	 * Essa fase sai do server-side (lado do servidor) e manda uma objeto como parâmetro para o cliente-side que irá
	 * exibi-lo como string
	 */
	@Override
	public String getAsString(FacesContext context, UIComponent componente, Object valor) {
		
		if(valor != null && valor instanceof Double){
			
			Double valorSaida = (Double) valor;
			
			return String.valueOf(valorSaida);
		}
		
		return "";
	}

	public LinguagemBean getLinguagem() {
		return linguagem;
	}

	public void setLinguagem(LinguagemBean linguagem) {
		this.linguagem = linguagem;
	}
	
	

}
